package com.kizuki.algorithm.leetcode;

import org.junit.Test;

import java.util.Arrays;

/**
 * 给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
 * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
 *
 * https://leetcode-cn.com/problems/largest-number/
 */
public class 最大数 {

    class Solution {
        public String largestNumber(int[] nums) {
            int len = nums.length;
            String[] strs = new String[len];
            for (int i = 0; i < len; i++) {
                strs[i] = "" + nums[i];
            }
            Arrays.sort(strs, (a,b) -> (b+a).compareTo(a+b));
            if(strs[0].charAt(0) == '0') {
                return "0";
            }
            StringBuilder builder = new StringBuilder();
            for (String s : strs) {
                builder.append(s);
            }
            return builder.toString();
        }
    }

    @Test
    public void test(){
        System.out.println(new Solution().largestNumber(new int[]{1, 9, 2, 12}));
    }
}
